function chkALL(a) {
	if ($("#" + a + "CheckALL").is(":checked")) {
		$("." + a).each(function() {
			$(this).prop("checked", true);
		});
	} else {
		$("." + a).each(function() {
			$(this).prop("checked", false);
		});
	}
}


/** 產生所需要的日期格式 **/
function df(type) {
	var dt = new Date();
	var year = dt.getFullYear().toString();
	var month = (dt.getMonth()+1)<10?"0"+(dt.getMonth()+1).toString():(dt.getMonth()+1).toString();
	var day = dt.getDate()<10?"0"+dt.getDate().toString():dt.getDate().toString();
	var hour = dt.getHours()<10?"0"+dt.getHours().toString():dt.getHours().toString();
	var minute = dt.getMinutes()<10?"0"+dt.getMinutes().toString():dt.getMinutes().toString();
	var seconds = dt.getSeconds()<10?"0"+dt.getSeconds().toString():dt.getSeconds().toString();
	var str = "";
	
	switch (type) {
	case 1: 
		str = year+":"+month+":"+day+"<br/>"+hour+":"+minute+":"+seconds;
		break;
	case 2:
		str = year+month+day;
		break;
	case 3:
		str = year+":"+month+":"+day+" "+hour+":"+minute+":"+seconds;
		break;
	case 4:
		str = year+":"+month+":"+day+" "+hour+":"+minute+":"+seconds;
		break;
	}
	
	return str; 
}


function pickAllStaff(tar) {
	/**
	紀錄目前有指派給此ID的角色
	而先記下來，等等的CheckBox要預先將它打勾
	陣列：	tmpSelectedRole	用來儲存目前的勾選
	i：		流程引擎中的groupId
	v：		流程引擎中的description
	**/
	var tmpSelectedRole = [];

	$(".selectd"+tar).each(function(i) {
		var m = $(this).attr("userID");
		var n = $(this).attr("nickName");
		var item = {"userID":m,"nickName":n };
		tmpSelectedRole.push(item);
	});
	/**
		去後端取得所有角色的名單
	**/
	$.ajax({
		type : "post",
		url : "GetTPOwner",
		data : $("#q_form").serializeArray(),
		dataType : "JSON",
		success : function(queryResult) {
			$("tbody[id=tBodyTPOwner] tr").remove();		//所有計畫負責人名單的 Table
			$.each(queryResult, function(i, res) {
				var bgcolor=getbgColor((i+1));
				var userID = res.userID;
				var nickName = res.nickName;				
				var ckd = "";								//用來決定是否要勾選
				
				/** 比對陣列中的元素，一樣的groupId就要勾起來 **/
				if (tmpSelectedRole.length >0) {
					for(var m=0;m<tmpSelectedRole.length;m++){
						if (tmpSelectedRole[m].userID == userID) {
							alert("比對成功");
							ckd = "checked=\"checked\"";
						}
					}	
				}
				
				$("#tBodyTPOwner").append("<tr bgcolor="+bgcolor+"><td><input type=\"checkbox\" class=\"tpo\" userID=\""+userID+"\" nickName=\""+nickName+"\"" + ckd +"/></td><td>"+(i+1)+"</td><td>"+nickName+"</td></tr>");
			});
	
			$("#dialog-Group").dialog({
				resizable : true,
				width : 260,
				height : 500,
				modal : true,
				buttons : {
					"關閉" : function() {
						/** 先清空顯示螢幕上已有的選項，以免愈append愈多 **/
						$("#sub_tpOwnerList")[0].value ="";
						$("#"+tar+" li").remove();
						var tpoStr = "";
						/** 測試案負責人 **/
						$(".tpo").each(function() {
							if ($(this).is(":checked")) {
								var userID = $(this).attr("userID");
								var nickName = $(this).attr("nickName");	//人員的暱稱(顯示給看的名稱)
								$("#"+tar).append("<li class=\"selectd"+tar+"\" nickName=\""+nickName+"\" userID="+userID+">"+nickName+"</li>");
								tpoStr += userID +","; 
							}
						});								
						
						
						/** 將選取的人員，加到q_form的欄位 **/
						if (tpoStr.length != 0){
							$("#sub_tpOwnerList")[0].value = tpoStr;
						}
						$(this).dialog("close");
					}
				}
			});
			$("#dialog-Group").css("visibility", "visible");
			
		}, error : function(xhr, ajaxOptions, thrownError) {
			alert("出代誌啊!! \n\n"+xhr.status+"\n\n"+xhr.responseText);
		}
	});
}

/** 使用者 **/
function Click_QueryUser() {
	var isNotBlank = 0;
	var numTPOwner = $("ul li").size();
	var str = "";
	$.each($(".require_from_group"), function(i, val) {
		str = str + val["value"]; // val是一個物件，若要取得物件中的值，需指定要屬性的名稱，也可以寫成val.value
		
		if (!($.trim(val["value"]) == "") || numTPOwner > 0) {
			isNotBlank = 1;
		}
	}); 
	
	$("#resultTable_b").html("");
	if (isNotBlank == 0) {
		$("#q_message").html("請至少輸入一個查詢欄位");
	} else { //表示有輸入，要開始查詢
		$("#q_message").html("");	//效果不太一樣，頂著先
		$.ajax({
			type : "post",
			url : "QueryUser",
			data : $("#q_form").serializeArray(),
			dataType : "JSON",
			success : function(queryResult) {
				$("#q_message").html("沒找到!!");
				$("#square").css("visibility", "hidden");
				$.each(	queryResult.sqlData,function(i,res) {
					$("#q_message").html("");
					var ind = (i+1);
					var bgcolor=getbgColor(ind);
					var str = "<tr bgcolor=\""+bgcolor+"\"><td>"+ ind+ "</td><td>"+ res.userID+ "</td><td>"+ res.nickName+ "</td><td><button type=\"button\" onClick=\"deleteUser('"+res.userID+"','"+res.nickName+"')\">刪除</button><button type=\"button\" onClick=\"updateUser('"+res.userID+"')\">修改</button></td></tr>";
					$("#ReaultNum").html("共有"+ind+"筆資料");
					$("#resultTable_b").append(str);
					$("#square").css("visibility", "visible");
				});
				$("button").button();
			}
		});
	}
}


/** 查詢測試計畫案 **/
/**
 * type 為1時，是變更測試計畫案內容
 * type 為2時，產生測試報告
 */
function Click_QueryTP(type) {
	var isNotBlank = 0;
	var numTPOwner = $("ul li").size();
	var str = "";
	$.each($(".require_from_group"), function(i, val) {
		str = str + val["value"]; // val是一個物件，若要取得物件中的值，需指定要屬性的名稱，也可以寫成val.value
		
		if (!($.trim(val["value"]) == "") || numTPOwner > 0) {
			isNotBlank = 1;
		}
	}); 
	
	$("#resultTable_b").html("");
	if (isNotBlank == 0) {
		$("#q_message").html("請至少輸入一個查詢欄位");
	} else { //表示有輸入，要開始查詢
		$("#q_message").html("");	//效果不太一樣，頂著先
		$("#sub_er")[0].value = "ALL";
		$.ajax({
			type : "post",
			url : "QueryTP",
			data : $("#q_form").serializeArray(),
			dataType : "JSON",
			success : function(queryResult) {
				$("#q_message").html("沒找到!!");
				$("#square").css("visibility", "hidden");
				$.each(	queryResult.sqlData,function(i,res) {
					$("#q_message").html("");
					var inde = (i+1);
					var bgcolor=getbgColor(inde);
					var str = "";
					if (type==1) {
						str = "<tr id=\"tr_"+res.tpid+"\" bgcolor=\""+bgcolor+"\"><td>"+ inde+ "</td><td>"+ res.tpName+ "</td><td>"+ "<button type=\"button\" onClick=\"click_deleteTP('"+res.tpid+"','"+res.tpName+"')\">刪除</button><button type=\"button\" onClick=\"moving("+res.tpid+")\">編輯</button></td></tr>";
					} else {
						str = "<tr bgcolor=\""+bgcolor+"\"><td>"+ inde+ "</td><td>"+ res.tpName+ "</td><td>"+ "<button type=\"button\" onClick=\"moving('"+res.tpid+"','"+res.tpName+"')\">瀏覽報告</button></td></tr>"; 
					}
					$("#ReaultNum").html("共有"+inde+"筆資料");
					$("#resultTable_b").append(str);
					$("#square").css("visibility", "visible");
				});
				$("button").button();
			}
		});
	}
}

/** 計算 **/
function checkWaitNum(tcuid) {
	//確認是否有輸入
	succNum = $("#tr_Succ").attr("value"); 
	failNum = $("#tr_Fail").attr("value");
	cantNum = $("#tr_Cant").attr("value");
	retestNum = $("#tr_retest").attr("value");
	numKeyPoint = parseInt($("#tr_NumKeyPoint").attr("value"),10);

	if (succNum !=""){
		succNum = parseInt(succNum,10);
		$("#"+tcuid+"_level01_succnum").html(succNum);
	}
	if (failNum !=""){
		failNum = parseInt(failNum,10);
		$("#"+tcuid+"_level01_failnum").html(failNum);
	}
	if (cantNum !=""){
		cantNum = parseInt(cantNum,10);
		$("#"+tcuid+"_level01_cantnum").html(cantNum);
	}
	if (retestNum !=""){
		retestNum = parseInt(retestNum,10);
		$("#"+tcuid+"_level01_retenum").html(retestNum);
	}
	if ( succNum !="" && failNum !="" && cantNum!="" ) {
		waitNum = numKeyPoint-(succNum + failNum + cantNum);
		$("#tr_Wait").html(waitNum);
		$("#"+tcuid+"_level01_waitnum").html(waitNum);
	} else {
		$("#tr_Wait").html("");
		$("#"+tcuid+"_level01_waitnum").html("");
	}
}


/** 只能輸入數字 **/
function ValidateNumber(e, pnumber,isTrRelated)
{
	var tcuid = $(e).attr("tcuid");
	if (!/^\d+$/.test(pnumber)) {
		var newValue =/^\d+/.exec(e.value);         
		if (newValue != null) {             
        	e.value = newValue;
    	} else {          
        	e.value = "";    
    	} 
    }
	if (isTrRelated) {
		checkWaitNum(tcuid);	
	}
	
    return false;
}

/** 設定畫面Table條紋顏色 **/
function getbgColor(i){
	var bgcolor ="#FFFFFF";
	if ((i) % 2 ==1) {bgcolor="#CCCCCC";}
	return bgcolor;
}

/** 相關資訊 **/
function Click_infoItem(obj) {
	$("#dialog-infoMR").css("visibility", "visible");
	$("#textarea_infoComment").val("");
	
	
	var mrid = $(obj).attr("mrid");
	var submittedBy = $("#sub_submittedBy")[0].value; 
	
	var tpid = $("#sub_tpid")[0].value;
	if (submittedBy != "tester") {
		tpid = $(obj).attr("tpid");
		$("#sub_tpid")[0].value = tpid;
	}
	
	var ver = $("#sub_ver")[0].value;
	if ( ver == undefined || ver =="") {
		ver = $(obj).attr("ver");
		$("#sub_ver")[0].value = ver;
	}
	
	var tpName = $(obj).attr("tpName");
	
	
	$("#sub_mrid")[0].value = mrid;
	
	var tmp = $("#"+mrid+"_mrDesc");
	var mrdescription = "";
	if (tmp == undefined || tmp == null) {
		mrdescription = $(obj).attr("mrdescription");
	} else {
		mrdescription = tmp.val();
	}
	$("#but_delMRItem").attr("mrid",mrid);
	$("#info_tpName").html(tpName);
	$("#info_mrDesc").html(mrdescription);
	
	$("#mrTester li").remove();
	var testerSet = $("#"+mrid+ " td:nth-child(4) li");
	if (testerSet != undefined) {
		$.each(testerSet,function(i){
			var userID = $(this).attr("val");
			var nickName = $(this).attr("nickName");
			$("#mrTester").append("<li class=\"mrTestOwner\" nickName=\""+nickName+"\" val=\""+userID+"\">"+nickName+"</li>");
		});	
	}
	
	$.post("TCforInfo",$("#q_form").serializeArray(), function(queryResult) {
		/** 指定的測試案例 **/
		$("#info_assignedTC").html("");
		if (queryResult.assignedTC != undefined) {
			$.each(queryResult.assignedTC, function(i, res) {
				var tcID = res.tcID;
				tcName = res.tcName;
				$("#info_assignedTC").append("【"+tcID+"】"+tcName+"<br/>");
			});	
		}
		$("#info_subTC").html(queryResult.submitTC);
		$("#info_reviewTC").html(queryResult.reviewTC);
		$("#info_subTR").html(queryResult.submitTR);
		$("#info_reviewTR").html(queryResult.reviewTR);
		
		/** 簽核歷程 **/
		$("#infoAction").html("");
		if (queryResult.actionLog != undefined && queryResult.actionLog.length >0) {
			$("#infoAction").html("<p><p><table><thead><tr><th colspan=\"4\">簽核歷程</th>	</tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><th>#</th><th>執行動作</th><th>執行時間</th><th>執行人員</th></tr></thead><tbody id=\"actionLog\"></tbody></table>");
			$.each(queryResult.actionLog, function(i, actLog) {
				var ind= i+1;
				var bgcolor=getbgColor(ind);
				$("#actionLog").append("<tr bgcolor=\""+bgcolor+"\"><td>"+ind+"</td><td>"+actLog.actionType+"</td><td>"+dateTimeFormat(actLog.startTime)+"</td><td>"+actLog.userName+"("+actLog.userID+")</td></tr>");
			});				
		}
		/** 相關意見 **/
		$("#infoComment").html("");
		if (queryResult.commentLog != undefined && queryResult.commentLog.length >0) {
			$("#infoComment").html("<p><p><table><thead><tr><th colspan=\"4\">相關意見</th></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><th>#</th><th>提出人員</th><th>提出時間</th><th>提出意見</th></tr></thead><tbody id=\"commentLog\"></tbody></table>");
			$.each(queryResult.commentLog, function(i, commLog) {
				if (commLog != null){
					var ind= i+1;
					var bgcolor=getbgColor(ind);
					$("#commentLog").append("<tr bgcolor=\""+bgcolor+"\"><td>"+ind+"</td><td>"+commLog.userName+"("+commLog.userID+")</td><td>"+dateTimeFormat(commLog.startTime)+"</td><td>"+commLog.comment+"</td></tr>");	
				}
			});	
		}
		/** 檔案上傳 **/
		$("#infoFileUpload").html("");
		if (queryResult.fileUploadLog != undefined && queryResult.fileUploadLog.length >0) {
			$("#infoFileUpload").html("<p><p><table><thead><tr><th colspan=\"5\">相關上傳檔案</th></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><th>&nbsp;</th><th>#</th><th>檔案名稱</th><th>上傳時間</th><th>上傳人員</th></tr></thead><tbody id=\"fileUploadLog\"></tbody></table>");
			$.each(queryResult.fileUploadLog, function(i, fileUplog) {
				var ind= i+1;
				var bgcolor=getbgColor(ind);
				$("#fileUploadLog").append("<tr bgcolor=\""+bgcolor+"\"><td><button onClick='Click_downloadFile(\""+fileUplog.sn+"\")' type=\"button\">下載</button></td><td>"+ind+"</td><td>"+fileUplog.fileName+"</td><td>"+dateTimeFormat(fileUplog.createdTime)+"</td><td>"+fileUplog.userName+"("+fileUplog.creator+")</td></tr>");
			});				
		}
	},"json");
	
	$("#dialog-infoMR").dialog({
		resizable : true,
		width : 900,
		height : 600,
		modal : true,
		buttons : {
			"關閉" : function() {
				$(this).dialog("close");
			}
		}
	});
}

/** 相關資訊的註解提交 **/
function Click_infoComment() {
	var tmp = $("#textarea_infoComment").val();
	if (tmp=="") {
		alert("請輸入註解!");
	} else {
		if (tmp == undefined){
			alert("請輸入註解!");
		} else {
			$("#sub_submitorComment")[0].value = "";
			$("#sub_submitorComment")[0].value = $("#textarea_infoComment").val();
			
			$.post("KeepCommentMR",$("#q_form").serializeArray(), function(res) {
				if (res =="OK") {
					$.post("TCforInfo",$("#q_form").serializeArray(), function(queryResult) {
						/** 相關意見 **/
						$("#infoComment").html("");
						if (queryResult.commentLog != undefined) {
							$("#infoComment").html("<p><p><table><thead><tr><th colspan=\"4\">相關意見</th></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><th>#</th><th>提出人員</th><th>提出時間</th><th>提出意見</th></tr></thead><tbody id=\"commentLog\"></tbody></table>");
							$.each(queryResult.commentLog, function(i, res) {
								var ind= i+1;
								var bgcolor=getbgColor(ind);
								$("#commentLog").append("<tr bgcolor=\""+bgcolor+"\"><td>"+ind+"</td><td>"+res.userName+"("+res.userID+")</td><td>"+dateTimeFormat(res.startTime)+"</td><td>"+res.comment+"</td></tr>");
							});	
						}
					},"json");
					alert("寫入完成!");
				} else {
					alert("寫入失敗!");
				}
			},"text");
		}
	}
}

/** 相關資訊的檔案上傳 **/
function Click_infoFileUpload() {
	var tmp = $("#file2").val();
	if (tmp=="") {
		alert("尚未選擇要上傳的檔案!");
	} else {
		if (tmp == undefined){
			alert("尚未選擇要上傳的檔案!");
		} else {
			var tmpStr = $("#sub_tpid")[0].value;
			$("#infoTpidFileUpload")[0].value = tmpStr;
			tmpStr = $("#sub_mrid")[0].value;
			$("#infoMridFileUpload")[0].value = tmpStr;
			tmpStr = $("#loginUser")[0].value;
			$("#infoLoginUserFileUpload")[0].value = tmpStr;
			$("#form_infoFileUpload").submit();
			
			$.post("TCforInfo",$("#q_form").serializeArray(), function(queryResult) {
				/** 檔案上傳 **/
				$("#infoFileUpload").html("");
				if (queryResult.fileUploadLog != undefined ) {
					$("#infoFileUpload").html("<p><p><table><thead><tr><th colspan=\"5\">相關上傳檔案</th></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><th>&nbsp;</th><th>#</th><th>檔案名稱</th><th>上傳時間</th><th>上傳人員</th></tr></thead><tbody id=\"fileUploadLog\"></tbody></table>");
					$.each(queryResult.fileUploadLog, function(i, res) {
						var ind= i+1;
						var bgcolor=getbgColor(ind);
						$("#fileUploadLog").append("<tr bgcolor=\""+bgcolor+"\"><td><button onClick='Click_downloadFile(\""+res.sn+"\")' type=\"button\">下載</button></td><td>"+ind+"</td><td>"+res.fileName+"</td><td>"+dateTimeFormat(res.createdTime)+"</td><td>"+res.creator+"</td></tr>");
					});				
				}
			},"json");
			
			alert("上傳成功!");
		}
	}
}

/** 由於回傳的datetime字尾有個.0 **/
function dateTimeFormat(datetimeStr) {
	return datetimeStr.substr(0,19);
}

/** 下載先前上傳的檔案 **/
function Click_downloadFile(fileSN) {
	$("#sub_sn")[0].value = fileSN;
	$("#form_fileDoload").submit();
}


/** 勾選欲選擇的角色 **/
function click_SelectRole() {
	/**
		紀錄目前有指派給此ID的角色
		而先記下來，等等的CheckBox要預先將它打勾
		陣列：	tmpSelectedRole	用來儲存目前的勾選
		i：		流程引擎中的groupId
		v：		流程引擎中的description
	**/
	
	var tmpSelectedRole = [];
	$(".selectedRole").each(function(items) {
		var i = $(this).attr("id");
		var v = $(this).attr("rolename");
		var item = {"id":i,"val":v}
		tmpSelectedRole.push(item);
	});

	
	/** 去後端取得所有角色的名單 **/
	$.ajax({
		type : "post",
		url : "GetGroups",
		dataType : "JSON",
		success : function(queryResult) {
			$("tbody[id=selectRole] tr").remove();		//先清空查詢結果，避免關閉Dialog後，再打開Dialog時，先前的東西還在
			$.each(queryResult.sqlData, function(i, res) {
				var bgcolor=getbgColor((i+1));
				var roleID = res.roleID;
				var roleName = res.roleName;
				var ckd = "";	//用來決定是否要勾選
				$("#selectRole").append("<tr bgcolor="+bgcolor+"><td><input type=\"checkbox\" class=\"selectedRole\" id=\""+roleID+"\" roleName=\""+roleName+"\"" + ckd +"/></td><td>"+(i+1)+"</td><td>"+roleName+"</td></tr>");
			});
			
			$("#dialog-Group").css("visibility", "visible");
			$("#dialog-Group").dialog({
				resizable : false,
				width : 350,
				height : 400,
				modal : true,
				buttons : {
					"關閉" : function() {
						/** 先清空顯示螢幕上已有的選項，以免愈append愈多 **/
						$("#selectedRole li").remove();
						$("#sub_GroupList")[0].value ="";
						
						var tpoStr = "";
						$(".selectedRole").each(function() {
							if ($(this).is(":checked")) {
								var val = $(this).attr("id");
								var role = $(this).attr("rolename");
								$("#selectedRole").append("<li class=\"selectedRole\" roleName=\""+role+"\" val=\""+val+"\" id="+val+">"+role+"</li>");
								tpoStr += val +","; 
							}
						});
						
						/** 將選取的人員，加到q_form的欄位 **/
						if (tpoStr.length != 0){
							$("#sub_GroupList")[0].value = tpoStr;
						}
						
						$(this).dialog("close");
					}
				}
			});
		}, error : function(xhr, ajaxOptions, thrownError) {
			$("#errorMessage").html("錯誤訊息狀態：" + xhr.status+"<p>");
			$("#errorMessage").append(xhr.responseText);
		}
	});
}

/** 顯示資料處理中，請稍後，預防出現空白網頁 **/
function showProcess() {

    for(i = 0 ; i < document.all.length ; i++){
        obj = document.all(i);
        if ( "text,button,radio,select-one,select-multi,submit".indexOf(obj.type) != -1 ) {
            obj.style.visibility = "hidden";
        }
    }

    if ( ! document.all.process ) {
        var objN = document.createElement("DIV");
        objN.id = "process";
        document.body.insertBefore(objN);

        if ( document.all.process ) {
            process.style.visibility = "visible";
            process.innerHTML = "<table width=400 height=60 border=1 cellspacing=0 cellpadding=0 bordercolordark=#808080>"+
                                "<tr><td bgcolor=#f4f4f4 align=center><img src=\"countdown.jpg\" align=\"absmiddle\" />&nbsp;<font color=#000080><b>作業處理中，請稍候．．．</b></font></td></tr></table>";
            process.style.position = "absolute";
            process.style.top = document.body.clientHeight/2-50;
            process.style.left = document.body.clientWidth/2-200;
            process.width = 400;

            if ( parent.iframemain ){
                parent.iframemain.scrollTo(500, process.style.top);
            }
        }
    }
}


/*

**/
function refreshUI(bd,ind) {
	var num = $("#"+bd+" tr").size();
	for (ini =0; ini<num; ini++) {
		$("#"+bd+" tr td:nth-child("+ind+")")[ini].innerHTML = (ini+1);
	}
	$("#"+bd+" tr:odd").attr("bgcolor","#CCCCCC");		//灰色
	$("#"+bd+" tr:even").attr("bgcolor","#FFFFFF");		//白色		
}